<!DOCTYPE html>
<html>
<head>
    <meta http-equiv="content-type" content="text/html; charset=utf-8"/>
    <title></title>
    <link rel="Stylesheet" href="css/analysis.css" />
    <script type="text/javascript">
        function init() {
            if (window.location.hash) {
                var parentDiv, nodes, i, helpInfo, helpId, helpInfoArr, helpEnvFilter, envContent, hideEnvClass, hideNodes;
                helpInfo = window.location.hash.substring(1);
                    if(helpInfo.indexOf("-")) {
                        helpInfoArr = helpInfo.split("-");
                        helpId = helpInfoArr[0];
                        helpEnvFilter = helpInfoArr[1];
                    }
                    else {
                        helpId = helpInfo;
                    }
                parentDiv = document.getElementById("topics");
                nodes = parentDiv.children;
                    hideEnvClass = (helpEnvFilter === "OnlineOnly"? "PortalOnly": "OnlineOnly");
                    if(document.getElementsByClassName) {
                        hideNodes = document.getElementsByClassName(hideEnvClass);
                    }
                    else {
                        hideNodes = document.querySelectorAll(hideEnvClass);
                    }
                for(i=0; i < nodes.length; i++) {
                    if(nodes[i].id !== helpId) {
                        nodes[i].style.display ="none";
                    }
                    }
                    for(i=0; i < hideNodes.length; i++) {
                        hideNodes[i].style.display ="none";
                    }
                }
            }
    </script>
</head>
<body onload="init()">
<div id="topics">
    <div id="toolDescription" class="regularsize">
        <h2>Join Features</h2><p/>
        <h2><img src="./images/GUID-900E33CD-3789-45B5-8F0C-92D91E64D2A4-web.png" alt="Join Features"></h2>
        <hr/>
    <p>The Join  Features  tool works with two
layers. Join  Features  joins attributes from one
feature to another based on spatial, temporal, and attribute
relationships or some combination of the  three. The tool determines all input features that meet the specified join conditions and joins the second input layer to the first. You can optionally join all features to the matching features or summarize the matching features.
    </p>
    <p>Join Features can be applied to points, lines, areas, and tables. A temporal join requires that your input data is time-enabled, and a spatial join requires that your data has a geometry. 
    </p>
    </div>
    <!--Parameter divs for each param-->
    <div id="targetLayer">
        <div><h2>Choose target layer</h2></div>
        <hr/>
        <div>
            <p>The layer that will have  attributes from the join layer appended to its table.
            </p>
            <p>Analysis using the  <b>Near</b> spatial relationship requires a projected coordinate system. You can set the processing coordinate system in Analysis Environments. If your processing coordinate system is not set to a projected coordinate system, you will be prompted to set it when you run analysis .
            </p>
            <p>In addition to choosing a layer from your map, you can choose  <b>Choose Analysis Layer</b> at the bottom of the drop-down list to browse to your contents for a big data file share dataset or feature layer. You may optionally apply a filter on your input layer or apply a selection on hosted layers added to your map. Filters and selections are only applied for analysis. 
            </p>
        </div>
    </div>
    <div id="joinLayer">
        <div><h2>Choose layer to join to target layer</h2></div>
        <hr/>
        <div>
            <p>The join layer with the attributes that will be appended to the target layer.
            </p>
            <p>In addition to choosing a layer from your map, you can choose  <b>Choose Analysis Layer</b> at the bottom of the drop-down list to browse to your contents for a big data file share dataset or feature layer. You may optionally apply a filter on your input layer or apply a selection on hosted layers added to your map. Filters and selections are only applied for analysis. 
            </p>
        </div>
    </div>
    <div id="joinOperation">
        <div><h2>Choose join operation</h2></div>
        <hr/>
        <div>
            <p>Determines how joins between the target and join layers will be handled in the output if multiple joining features are found to have the same relationship to the layer being joined. There are two join operations from which to choose:
                <ul>
                    <li> <b>Join one to one</b>&mdash;This option summarizes all the matching features to each feature being joined.
                    </li>
                    <li> <b>Join one to many</b>&mdash;This option joins all the matching features to the join layer.
                    </li>
                </ul>
                
            </p>
            <p>For example, suppose you wanted to find supermarkets within 2 kilometers of a farmer's market.   In this case, the target layer has a single feature representing a farmer's market, and the join layer represents the local grocery stores and has attributes such as total annual sales. Using the Join Features tool, you find that five grocery stores meet the criteria. If you specified a join operation of  <b>Join one to many</b>, you would end up with five features in your result, each row representing the farmer's market and a supermarket. If you specified a <b>Join one to one</b> relationship, you would end up with one feature representing the farmer's market and the summarized information from the supermarkets, such as the count (2), and other statistics such as the sum of annual sales.
            </p>
        </div>
    </div>
    <div id="joinOptions">
        <div><h2>Select one or more joins</h2></div>
        <hr/>
        <div>
            <p>Specifies the join option used. You can apply one, two, or three of the following join types: 
                <ul>
                    <li> <b>Spatial</b>&mdash;Uses a specified spatial relationship to join features. This requires that both layers have a geometry.
                    </li>
                    <li> <b>Temporal</b>&mdash;Uses a temporal relationship to join features. This requires that time be enabled on both layers.
                    </li>
                    <li> <b>Attribute</b>&mdash;Joins features based on equal fields.
                    </li>
                </ul>
                
            </p>
            <p>
            </p>
        </div>
    </div>
    <div id="spatialRelationship">
        <div><h2>Choose a spatial relationship</h2></div>
        <hr/>
        <div>
            <p>The spatial relationship that will determine if features are joined to each other. The following available relationships depend on the type of geometry (point, polyline, or polygon) being used as the input features:
                <ul>
                    <li> <b>Intersects</b>&mdash;The features will be matched if they intersect each other.
                    </li>
                    <li> <b>Equals</b>&mdash;The features will be matched if they have the same geometry.
                    </li>
                    <li> <b>Near Planar</b>&mdash;The features will be matched if they are within a specified distance of each other. The target   layer must be in a projected coordinate system, or the processing spatial reference must be set to a projected coordinate system using <b>Analysis Environments</b> if a spatial <b>Near</b> relationship is used.
                    </li>
                    <li> <b>Near Geodesic</b>&mdash;The features will be matched if they are within a specified distance of each other. The distance is measured using planar distance.
                    </li>
                    <li> <b>Contains</b>&mdash;The features will be matched if the target layer is contained in the joining features.
                    </li>
                    <li> <b>Within</b>&mdash;The features will be matched if the target layer is within the joining features.
                    </li>
                    <li> <b>Touches</b>&mdash;The features will be matched if they have a boundary that touches the target feature.
                    </li>
                    <li> <b>Crosses</b>&mdash;The features will be matched if they have a crossing outline.
                    </li>
                    <li> <b>Overlaps</b>&mdash;The features will be joined if they overlap.
                    </li>
                </ul>
                
            </p>
        </div>
    </div>
    <div id="nearSpatial">
        <div><h2></h2></div>
        <hr/>
        <div>
            <p> Specifies the radius applied to a spatial near relationship.
            </p>
            <p>For example, if you had a dataset representing a nuclear plant and a dataset representing residences, you could set a 1 kilometer nearSpatial distance to find houses within 1 kilometer of the nuclear plant.
            </p> 
        </div>
    </div>
    <div id="temporalRelationship">
        <div><h2>Choose a temporal relationship</h2></div>
        <hr/>
        <div>
            <p>The temporal relationship that will determine if features are joined to each other. This option is only available if time is enabled on both layers, and the  available relationships depend on the type of time (instant or interval) used for the input features. The available temporal relationships are as follows:
                <ul>
                    <li> <b>Meets</b>&mdash;The features will be matched if the first feature meets the second.
                    </li>
                    <li> <b>Met By</b>&mdash;The features will be matched if the first feature is met by the second.
                    </li>
                    <li> <b>Overlaps</b>&mdash;The features will be matched if the first feature overlaps the second.
                    </li>
                    <li> <b>Overlapped By</b>&mdash;The features will be matched if the first feature is overlapped by the second.
                    </li>
                    <li> <b>During</b>&mdash;The features will be matched if the first feature is during the second.
                    </li>
                    <li> <b>Contains</b>&mdash;The features will be matched if the first feature contains the second.
                    </li>
                    <li> <b>Equals</b>&mdash;The features will be matched if the first feature equals the second.
                    </li>
                    <li> <b>Finishes</b>&mdash;The features will be matched if the first feature finishes the second.
                    </li>
                    <li> <b>Finished By</b>&mdash;The features will be matched if the first feature is finished by the second.
                    </li>
                    <li> <b>Starts</b>&mdash;The features will be matched if the first feature starts  the second.
                    </li>
                    <li> <b>Started By</b>&mdash;The features will be matched if the first feature is started by the second.
                    </li>
                    <li> <b>Intersects</b>&mdash;The features are matched if the times intersect at all.
                    </li>
                    <li> <b>Near</b>&mdash;The features will be joined if they are near each other, determined by a specified time.
                    </li>
                    <li> <b>Near Before</b>&mdash;The features will be joined if the first feature is before the second feature and within the specified time.
                    </li>
                    <li> <b>Near After</b>&mdash;The features will be joined if the first feature is after the second feature and within the specified time.
                    </li>
                </ul>
                
            </p>
        </div>
    </div>
    <div id="nearTemporal">
        <div><h2></h2></div>
        <hr/>
        <div>
            
            <p>Specifics the temporal radius applied to a temporal near relationship. A temporal near relationship includes  <b>Near</b>, <b>Near Before</b>, and <b>Near After</b>.
            </p>
            <p>For example, if you have a layer of boating incidents and a layer of GPS tracks for a hurricane, you could look for boating incidents within a specified distance of hurricane tracks in both space (1 kilometer) and time (5 hours). This would result in boating incidents joined to hurricanes that occurred close together in space and time.
            </p>
        </div>
    </div>
    <div id="attributeRelationship">
        <div><h2>Choose the fields to match</h2></div>
        <hr/>
        <div>
            <p>Matches values in a field from one layer to  values in a field in another layer. 
            </p>
            <p>For example, if you had a countywide geographic layer of residential addresses (including a  <i>ZIP</i> field) and a tabular dataset of health demographics by ZIP Code (a field named <i>HEALTHZIP</i>), you could join the health dataset to the residential data by matching the <i>ZIP</i> field to the <i>HEALTHZIP</i> field. This would result in a layer of residences with the corresponding health data.
            </p>
        </div>
    </div>
    <div id="summaryFields">
        <div><h2>Add statistics (optional)</h2></div>
        <hr/>
        <div>
            <p>Calculates statistics on the joined features if the join operation is  <b>Join one to one</b>. All statistics will be calculated by default.
            </p>
            <p>You can calculate statistics on features that are summarized. On numeric fields, you can calculate the following: 
                <ul>
                    <li>Count&mdash;Calculates the number of nonnull values. It can be used on numeric fields or strings. The count of [null, 0, 2] is 2.
                    </li>
                    <li>Sum&mdash;The sum of numeric values in a field. The sum of [null, null, 3] is 3.
                    </li>
                    <li>Mean&mdash;The mean of numeric values. The mean of [0, 2, null] is 1.
                    </li>
                    <li>Min&mdash;The minimum value of a numeric field. The minimum of [0, 2, null] is 0. 
                    </li>
                    <li>Max&mdash;The maximum value of a numeric field. The maximum value of [0, 2, null] is 2.
                    </li>
                    <li>Range&mdash;The range of a numeric field. This is calculated as the minimum values subtracted from the maximum value. The range of [0, null, 1] is 1. The range of [null, 4] is 0.
                    </li>
                    <li>Variance&mdash;The variance of a numeric field in a track. The  variance of [1] is null. The variance of [null, 1,0,1,1] is 0.25.
                    </li>
                    <li>Standard deviation&mdash;The standard deviation of a numeric field. The standard deviation of [1] is null. The standard deviation of [null, 1,0,1,1] is 0.5. 
                    </li>
                </ul>
                
            </p>
            <p>On string fields, you can calculate the following:
                <ul>
                    <li>Count&mdash;The number of nonnull strings.
                    </li>
                    <li>Any&mdash;This statistic is a random sample of a string value in the specified field.
                    </li>
                </ul>
                
            </p>
            <p>All statistics are calculated on nonnull values. The resulting layer will contain a new field for each statistic calculated. Any number of statistics can be added by choosing an attribute and a statistic.
            </p>
        </div>
    </div>
    <div id="joinCondition">
        <div><h2>Build an expression to join features by (optional)</h2></div>
        <hr/>
        <div>
            <p>Applies a condition to specified fields. Only features with fields that meet these conditions will be joined.
            </p>
            <p>For example, if you want to apply a join to a dataset for only those  features where  <i>health_spending</i>  is greater than 20 percent of <i>income</i>,  apply a join condition of <code>$target[&quot;health_spending&quot;] &gt; ($join[&quot;income&quot;] * .20)</code> using the field <i>health_spending</i> from the first dataset (the dataset features are joined to) and the <i>income</i> field from the second dataset (the dataset being joined).
            </p>
            <p>Join conditions can be applied using the expression calculator.
            </p>
        </div>
    </div>
    <div id="dataStore">
        <div><h2>Choose datastore</h2></div>
        <hr/>
        <div>
            <p>GeoAnalytics results are stored to an data store and exposed as a feature layer in   Portal for ArcGIS. In most cases, results should be stored to the spatiotemporal data store and this is the default. In some cases, saving results to the  relational data store is a good option. The following are reasons why you may want to store results to the relational data store: 
                <ul>
                    <li>You can use results in portal-to-portal collaboration.
                    </li>
                    <li>You can enable sync capabilities with your results.
                    </li>
                </ul>
                
            </p>
            <p>You should not use the relational data store if you expect your GeoAnalytics results to increase and need to take advantage of the spatiotemporal big data store's capabilities to handle large amounts of data.
            </p>
        </div>
    </div>
    <div id="outputName">
        <div><h2>Result layer name</h2></div>
        <hr/>
        <div>
            <p> The name of the layer that will be created.  If you are writing to an ArcGIS Data Store, your results will be saved in  <b>My
Content</b> and added to the map. If you are writing to a big data file share, your results will be stored in the big data file share and added to its manifest. It will not be added to the map. The default name is based on the
tool name and the input layer name. If the layer already exists, the tool will fail.
            </p>
            <p>When writing to   ArcGIS Data Store  (relational or spatiotemporal big data store) using the  <b>Save result in</b> drop-down box, you can specify
the name of a folder in <b>My Content</b> where the result will be
saved.
            </p>
        </div>
    </div>
</div>
</html>
